package com.aliang.book_java1.po.freemark模板生成类;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

public class MakeTemplatClass {
    public static void main(String[] args) throws IOException, TemplateException {
        // 创建Configuration实例
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);
        cfg.setClassForTemplateLoading(MakeTemplatClass.class, "/"); // 设置模板文件所在的目录
        cfg.setDefaultEncoding("UTF-8"); // 设置默认编码
        cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); // 设置异常处理器

        // 创建数据模型
        Map<String, Object> root = new HashMap<>();
        root.put("packageName", "com.example");
        root.put("className", "MyClass");
        root.put("fieldName", "myField");
        root.put("fieldNameType", "String");

        // 获取模板
        Template temp = cfg.getTemplate("template.ftl");

        // 合并模板和数据模型
        Writer fileOut = null;
        try {
            fileOut = new FileWriter(new File("scaffold/MyClass.java"));
            temp.process(root, fileOut);
        } finally {
            try {
                if (fileOut != null) fileOut.close();
            } catch (IOException ex) {
                // handle exception
            }
        }
    }
}
